var SERVICE_NOT_AVAILIBLE = "Sorry!\nPage is still loading.\n\nTry again later.";
var SHOW_APPLICANT_IMAGAE_FOLDER =
	(typeof(SHOW_APPLICANT_IMAGAE_FOLDER_NS)!='undefined' ? SHOW_APPLICANT_IMAGAE_FOLDER_NS : "/Manager/Common/ShowApplImageFolder.aspx?")+
	"pdf=pdf.pdf&";
function ApplID(){return getParamInt("ApplID")}
function attachToKeyDown(doc){(doc||document).attachEvent("onkeydown",doEnterKey);}
function attachToMouseDown(){
	document.attachEvent("onmouseover",mouseover);
	document.attachEvent("onmouseout",mouseout);
}
function doOnSelect(fieldName,w,defaultFunc){
	w = w || self;
	if( typeof(fieldName) == "object" && fieldName.dataFld )fieldName = fieldName.dataFld;
	fieldName = fieldName || (event||{}).fieldName || ((event||{}).srcElement).dataFld;
	if( !fieldName )return;
	var fooName = "onSelect__"+fieldName;
	var foo = w[fooName];
	if( !foo )foo = w.top[fooName];
	if( !foo )foo = (w.top.opener||{})[fooName];
	if( !foo )foo = (((w.top.dialogArguments||{}).opener)||{})[fooName];
	if( !foo )foo = findTop(w)[fooName];
	var ret;
	if( foo ) ret = foo(event);
	if( (!foo && defaultFunc) || ret === false )return defaultFunc(event);
}
function dialogParams(w,h,t,l){
	w = w || screen.availWidth / 2;
	h = h || screen.availHeight / 2;
	t = t || (event||{}).screenY || (screen.availHeight-h)/2;
	l = l || (event||{}).screenX || (screen.availWidth -w)/2;
	return ["status=no","resizable=yes","dialogWidth="+w+"px","dialogHeight="+h+"px","dialogTop="+t+"px","dialogLeft="+l+"px"];
}
function winsPush(w){
	var ws = self.wins;
	if( !ws )ws = top.wins;
	if( !ws )try{ws = (top.opener||{}).wins;}catch(e){}
	if( !ws )ws = (((top.dialogArguments||{}).opener)||{}).wins;
	if( !ws )ws = findTop().wins;
	if(  ws )ws.push(w);
	return w;
}
function findTop(w){
	try{
		for( var Parent=_opener(w); Parent && _opener(Parent); Parent = _opener(Parent) ){}
		try{ if( Parent )return Parent.top;	}catch(e){}
		return top;
	}catch(e){
		status = "Events:"+e.description;
		return top;
	}
	function _opener(w){ w = w || top;	return (w.dialogArguments||{}).opener || w.top.opener;	}
}

function features(add){
var s = ",status=no,toolbar=no,menubar=no,location=no,resizable=yes,scrollbars=yes,top=0,left=0,"+(add||'');
var statusBar = s.match(/status=yes/i)?true:false;
	return "height="+(screen.availHeight-30-(statusBar?30:0))+",width="+(screen.availWidth-10)+s;
}
function getTimeTag(){return top.WS_TIME_TAG;}
function copyBody(doc){
	doc.execCommand("SelectAll");
	var r = doc.selection.createRange();
	r.execCommand("Copy");
	return;
var r = document.body.createTextRange();
  r.moveToElementText(document.all.tags("TABLE")[0]);
	r.select();
	r.execCommand("copy");
}
function copyElement(el){
	if( typeof(el) == "string" )
		return top.clipboardData.setData("Text",el);
var r = el.document.body.createTextRange();
  r.moveToElementText(el);
	r.select();
	r.execCommand("copy");
}
function reLoadIfStuck(count,timeOut){
	status = "Reload ["+location.pathname+"] count:"+count;
	if( document.readyState == 'complete' )return status = "Done with "+location.pathname;
	if( !count )return location.reload(true);
	setTimeout("reLoadIfStuck("+(--count)+","+timeOut+")",timeOut);
}
function traceTags(w){
	var a = new Array;
	for( var i=0,all=(w||this).document.all; i < all.length; i++ )
		if( all[i].tagName.indexOf("FRAME") < 0 &&  all[i].readyState != "complete" && all[i].readyState != 4 )
			a.push(__showTag(all[i]));
	//for( var i=0,frms=(w||this).frames; i < frms.length; i++ )
	//	a.concat(traceTags(frms[i]));
	if( !w ){
		//debugger;
		status = location.pathname+":"+new Date();
		if( a.length )alert(a.join("\n"));
	}else return a;
	// Locals
	function __showTag(el){return el.outerHTML;
		for( var a=new Array,b=true; el; el = el.parentElement,b=false )
			a.push(b?encode(el.outerHTML).bold():encode(el.outerHTML));
		return a.reverse().join("\n");
	}
	function encode(html){
		return html.replace("&","&amp;").replace("<","&lt;").replace(">","&gt;");
	}
}
// location
function getRootPath(){return location.href.match(/.+\/\/[^/]*/)[0];}
function defined(v){ return typeof(v)!='undefined' }
function isDocReady(){return document.readyState == "complete"}

function doEnterKey(){
	if( (event.keyCode == 13 ||
				(!event.srcElement.className.match(/biglist/i) && event.keyCode == 40)) &&
			 event.srcElement.type != "button" &&
			 event.srcElement.tagName != "TEXTAREA"
		){
		event.cancelBubble = true;
		event.keyCode = 9;
	}
	if( event.keyCode == 38 ){return;
		var doc = event.srcElement.document;
		var inps = doc.all.tags("INPUT");
		var inpPrev;
		for( var i = 0 ; i < inps.length; i++ ){
			
		}
	}
}
function sortInt(array){return array.sort(function(x,y){return x-y})}
function trim(s){ 
	if( !defined(s) || (!typeof(s)=="string" && !(s instanceof String)) )return s;
	s = s.replace(/\x00/g,"");
	return s.replace(/^\s+/,"").replace(/\s+$/,"");
}
function callStack(){
	var foos = new Array();
	for( var foo=arguments.callee.caller,tabs="",a=[]; foo; foo = foo.caller,tabs+=" " ){
		if( _fooExists(foo) )break;
		foos.push(foo);
		a.push( tabs+getFuncName(foo) );
	}
	return a;
	/// Loxcal
	function _fooExists(){
		for( var i=0; i < foos.length; i++ )
			if( foos[i] == foo )return true;
	}
}
function callSelf(){
	var foos = new Array();
	for( var foo=arguments.callee.caller; foo; foo = foo.caller ){
		if( _fooExists(foo) )return true;
		foos.push(foo);
	}
	return false;
	/// Loxcal
	function _fooExists(){
		for( var i=0; i < foos.length; i++ )
			if( foos[i] == foo )return true;
	}
}
function getFuncName(func){
var a = arguments.length? func : getFuncName.caller;
	if( !a )return "";
	a = a.toString().match(/function ([^\(\s]+)/)
	if( a && a[1] )return a[1];
	return "";
}
// ***** Location
function getScriptServer(){return location.protocol+"//"+location.host }
function getPath(name){
var a = (name||location.href).match(/.+[\\\/]/);
	return a?a[0].substr(0,a[0].length-1):"";
}
// ***** IsError
function isRDSError(rs,noShow,caller){
	if( !(rs = isRSObject(rs)) )return false;
	if( !rs.State || rs.RecordCount < 1 )return false;
	if( !rs.Fields(0).Name.match(/Error/i) ) return false;
	if( noShow )return true;
	for( var i=0,s=''; i < rs.Fields.Count; i++ )
		if( rs.Fields(i).Value )s += rs.Fields(i).Value + "\n";
	alertHTML( getFuncName(caller)+"(...)\n"+s );
	return rs;
}
function isRSObject(obj){ 
	if( obj && defined(obj.StayInSync) )return obj;
	if( !isString(obj) )return false;
	try{
		var root = new ActiveXObject("Microsoft.XMLDOM");
		var rs = new ActiveXObject("adodb.recordset");
		if( !root.loadXML(obj) )return false;
		rs.open(root);
		return rs;
	}catch(e){return false}
}
// ***** Alerts
function alertHTML(text,caller,modeles){
var callerName = caller === undefined ? "<DIV title='"+(callStack()||[]).join("\n")+"'>Stack</DIV>" : getFuncName(caller);
	text = unescape(text).replace(/\n\s*\n\s*\n/g,"\n\n");
	var base = text.match(/<base.+?>/i,"");
	text = (base||"")+text.replace(/<base.+?>/i,"");
	var show = modeles ? showModelessDialog : showModalDialog;
	return show("/Include/Alert.htm",{text:(callerName?callerName+"<br>":"")+"<pre style='background-color:buttonface;margin:0px'>"+text+"</pre>"},"status:0;resizable:1;help:0");
}
function messageBox(text){
	return showModalDialog("/Include/Message.htm",{text:text},"status:0;resizable:1;help:0");
}
function alertText(text){
	alert(unescape(text).replace(/<.+?>/g,"").replace(/^\s*$/gm,"").replace(/^\s*(\S+)/gm,"$1").replace(/[\n|\r]{2,}/g,"\n").substr(0,256));
}
/***** Dialogs *****/
function cropWindowThread(delay,direction,noMore,win){
	clearTimeout(window.cropID);
	window.cropID = setTimeout(function(){cropWindow(direction,noMore,win)},delay||500);
}
function cropWindow(direction,noMore,win){
	win = win || top;
	if( typeof(win.dialogArguments) == 'undefined' )return;
	var	Top = (win.screenTop-24)+"px";
	var	Left = (win.screenLeft-4)+"px";
	var eBody = win.document.body;
	var fnResize = win.onresize;	win.onresize = null;
	_setResize();
	if( !direction || direction == 'h' )
		try{
			_adjustH(noMore);
			//if( Math.abs(parseInt(external.dialogWidth)-eBody.scrollWidth) > 30 )
			//	external.dialogWidth=(eBody.scrollWidth+8)+"px";
		}catch(e){return}
	if( !direction || direction == 'v' )
		try{//external.dialogHeight=(eBody.scrollHeight+35)+"px"
			setTimeout(
				function(){
					_adjustV(noMore);
					setTimeout(
						function(){
							//_adjustH(noMore);
							window.onresize=fnResize;
							_setResize(true);
							_restorePosition();
						},1)},1);
		}catch(e){return}
	//if( !noMore )setTimeout(function(){_adjustV(true);_adjustH(true);},1000);
	//Locals
	function _setResize(on){
		for( var i=0; i < eBody.all.length; i++ ){
			if( on && eBody.all[i].onResize )eBody.all[i].onresize = eBody.all[i].onResize;
			if( !on && eBody.all[i].onresize ){
				eBody.all[i].onResize = eBody.all[i].onresize;
				eBody.all[i].onresize = null;
			}
		}
	}
	function _restorePosition(){
		win.dialogTop  = Top;
		win.dialogLeft = Left;
	}
	function _adjustH(noMore){
		var w = noMore ? 0 : 50;
		external.dialogWidth = Math.max(parseInt(external.dialogWidth)-w,w)+"px";
		external.dialogWidth = eBody.scrollWidth+"px";
		var prevDiff = parseInt(external.dialogWidth)-eBody.scrollWidth;
		while( prevDiff < 10 ){
			external.dialogWidth = Math.min(parseInt(external.dialogWidth)+1,screen.availWidth)+"px";
			var currDiff=parseInt(external.dialogWidth)-eBody.scrollWidth;
			if( currDiff == prevDiff )break;
			prevDiff = currDiff; 
		}
		_restorePosition();
	}
	function _adjustV(noMore){
		var h = noMore ? 0 : 50;
		external.dialogHeight = (parseInt(external.dialogHeight)-0)+"px";
		external.dialogHeight = eBody.scrollHeight+"px";
		var prevDiff = parseInt(external.dialogHeight)-eBody.scrollHeight;
		while( prevDiff < 61 ){
			external.dialogHeight = Math.min(parseInt(external.dialogHeight)+2,screen.availHeight)+"px";
			var currDiff=parseInt(external.dialogHeight)-eBody.scrollHeight;
			if( currDiff == prevDiff )break;
			prevDiff = currDiff; 
		}
		_restorePosition();
	}
	//if( !noMore )setTimeout(function(){cropWindow(direction,true)},100);
	//if( !noMore )cropWindow(direction,true);
}
function navigateDialog(url){debugger;
	url = url || location.href;
	if( (window.dialogArguments||{}).reload ){
		setTimeout(function(){window.close();},500);
		window.dialogArguments.reload(url);
	}else	window.navigate(url);
}
function Opener(w){ 
	w = w || top;
	return (w.dialogArguments||{}).opener || w.top.opener || w.top;
}
// ***** Elements
function getElementsByAttr(parent,attrName,value){
var all = parent.all;
	for( var i=0,els=new Array(); i < all.length; i++ )
		if( all[i].getAttribute(attrName)!=null && (!defined(value) || (all[i].getAttribute(attrName)||"").match(value)) )
			els[els.length] = all[i];
	return els;
}
//function findChildByDataFld(fieldName,parent){
//	if( !parent )parent = document;
//	if( typeof(parent) == "string" )
//		parent = findChildByAttr(null,"dataSrc","#"+parent);
//	return findChildByAttr(parent,"dataFld",fieldName);
//}
function getParentFrame(win){
var frm = (win||self).frameElement || (win||self);
	return frm.offsetParent;
}
function getParentElementByAttrName(el,attrName,value){
	for( el = el.parentElement; el; el = el.parentElement )
		if( el.getAttribute(attrName) != null && (!defined(value) || el[attrName] == value) )return el;
		return null;
}
function getChildByAttr(parent,attr,value){
	for( var re=new RegExp("^"+value+"$","i"),i=0,all=(parent||document).all ; i < all.length; i++ )
		if(	all[i].tagName != "OPTION" && defined(all[i][attr]) && (!defined(value) || all[i][attr].match(re)) )return all[i];
		return null;
}
function selectElementsByAttributeEx(parent,attrName,value){
	var aFlds = new Array();
	parent = parent.all;
	for(var i=0; i < parent.length; i++ )
		if( parent[i].tagName != "OPTION" &&
				parent[i].getAttribute(attrName)!=null &&
				(!defined(value) || parent[i].getAttribute(attrName).match(value)) )aFlds.push(parent[i]) ;
	return aFlds;
}
function selectElementsByAttribute(node,attrName,attrValue){
var aFlds = new Array();
	for(var i=0; i < node.all.length; i++ )
		if( defined(node.all[i][attrName]) && 
				(!defined(attrValue) || node.all[i][attrName] == attrValue) )
			aFlds[aFlds.length] = node.all[i];
	return aFlds;
	function defined(v){return typeof(v) != 'undefined'}
}
function getTreeIndex(el){
	for( var s=[] ; el; el = el.parentElement || el.parentTag )
		if( el.rowIndex != undefined )s.push(el.rowIndex);
	return s;
}
function getNextTag(el){
	var el = el.nextSibling;
	while( !el.tagName )el = el.nextSibling;
	return el;
}
function getParentTD(el){return getParentByTag(el,"td")}
function getParentTR(el){return el.tagName=="TR"?el:getParentByTag(el,"tr")}
function getParentTBODY(el){return getParentByTag(el,"tbody")}
function getParentTable(el){return getParentByTag(el,"table")}
function getParentByTag(el,tagName){return getParentElementByTagName(el,tagName)}
function getParentElementByTagName(el,parentName){
	parentName = parentName.toLowerCase();
	for( ; el; el = el.parentElement )
		if( el.tagName.toLowerCase() == parentName )return el;
	return null;
}
function getParentByAttr(el,attrName,value){
	for( var re=new RegExp("^"+value+"$","i") ; el; el = el.parentElement )
		if( defined(el[attrName]) && (!defined(value) || el[attrName].match(re)) )return el;
		return null;
}
function getParentByAttrEx(el,attrName,value){
	for( ; el; el = el.parentElement )
		if( el.getAttribute(attrName)!=null && (!defined(value) || el.getAttribute(attrName).match(value)) )return el;
		return null;
}
function getDataSrc_Old(el){
	if( el && el.classid && el.classid.match(/clsid:BD96C556-65A3-11D0-983A-00C04FC29E33/i) )return el.id;
	for( ; el; el = el.parentElement )
		if( el.dataSrc )return el.dataSrc.substr(1);
		else if( el.getAttribute("DataSource") )return el.dataSource.substr(1);
	throw new Error(0,"No parent element with Data Source was found.");
}
function getDataSrcContainer(el){
 return getParentByAttrEx(el,"dataSrc",/.+/);
}
function getDataSrc(el){
 var ds = (getParentByAttrEx(el,"dataSrc",/.+/)||{}).dataSrc;
 if( !ds && (ds = getParentByAttrEx(el,"dataSource",/.+/)) )
  ds = ds.getAttribute("dataSource");
 return ds.replace(/^#/,"");
}
function getParentAttr(el,attrName){return ((getParentByAttr(el,attrName)||{})[attrName]||"").replace(/^#/,"")||null;}
function elementByDataFld(el,field){
	return getChildByAttr(getParentTR(el),"dataFld",field);
}
function fieldByName(el,field){
	return getElementValue(elementByDataFld(el,field));
}

function getElementValue(el,integer){
	if( el.tagName && el.tagName.match(/(input|select|textarea)/i) )
		switch(el.type){
			case "radio":
				return el.value.match(/(false|true)/i) ? eval(el.value.toLowerCase()) : el.value;
			case "checkbox":
				var isBool = el.getAttribute("bool") != null;
				return !isBool && integer?(el.checked?1:0):el.checked;
			case "select-multiple":	return _selValues(el);
			default: return el.value;
		}
	return el.innerText;
	// Local
	function _selValues(sel){
		for( var i=0,a=[]; i < sel.length; i++ )
			if( sel[i].selected )a.push(sel[i].value);
		return a;
	}
}
function setElementValue(el,value){
	if( el.tagName && el.tagName.match(/input|textarea|select/i) )
		switch(el.type){
			case "radio":
			case "checkbox":
				return el.checked = eval(value) ? true : false;
			case "text":
				return el.value = value||"";
			default:
				return el.value = value;
		}
	return el.innerHTML = value;
}
function resizeSelect(sel){
	sel.size = sel.length;
}
function selectSelect(sel,value,noDefault){
	for( var i=0; i < sel.length; i++ )
		if( sel[i].value == value ){sel[i].selected=true;	break;}
	if( noDefault && sel.length == i )sel.selectedIndex = -1;
	return value;
}
function getLeftPos(element, parent){
	if(!element)return 0;
	for(var n=0,e=element; e; e=e.offsetParent)
	n += e.offsetLeft+parseInt(e.currentStyle.paddingLeft)+(parseInt(e.currentStyle.marginLeft)||0);
  return n+getLeftPos(parent||eval(element.document.documentElement.id));
}
function getTopPos(element, parent){
	if(!element)return 0;
  for(var n=0,e=element; e; e=e.offsetParent)
	n += e.offsetTop + parseInt(e.currentStyle.paddingTop) + (parseInt(e.currentStyle.marginTop)||0);
  return n+getTopPos(parent||eval(element.document.documentElement.id));
}
// ***** DHTML
function mouseover() {
var e = window.event.srcElement;
  if(e && (e.over == "true" || e.getAttribute("classOver"))) {
     e.oldClass = e.className;
     e.className += " "+e.classOver;
  } 
}
function mouseout() {
var e = window.event.srcElement;
  if(e && (e.over == "true" || e.getAttribute("classOver")))
		e.className = e.oldClass;
}
function mousedown(){
var e = window.event.srcElement;
  if (e && e.down == "true")e.className += " "+e.classDown;
}
function mouseup() {
var e = window.event.srcElement;
  if (e && e.down == "true")e.className = e.className.replace(" "+e.classDown,"");
}
// ***** HTTP
function getParamInt(name,request){
	var i = parseFloat(getParam(name,request));
	return isNaN(i)?0:i;
}
function getParam(name,request){
	var re = new RegExp(name+"=[^&]*","ig");
	var search = (request || location).search.replace(/[?]/,"");
	var s = search.match(re) || unescape(search).match(re);
	return s?s[0].replace(new RegExp(name+"=","i"),""):"";
}
// ***** Cookies
function setCookie(name, value, expires, path, domain, secure) {
  var curCookie = name + "=" + escape(value) +
      ((expires) ? "; expires=" + expires.toGMTString() : "") +
      ((path) ? "; path=" + path : "") +
      ((domain) ? "; domain=" + domain : "") +
      ((secure) ? "; secure" : "");
  document.cookie = curCookie;
}
function getCookie(name) { // use: getCookie("name");
  var re = new RegExp(name + "=([^;]+)");
  var value = re.exec(document.cookie);
  return (value != null) ? unescape(value[1]) : null;
}
// ***** Frames
function closeUs(){
	top.close();
}
// ***** Salary
function doSalary(el,thread){
	var sal = calcSalary(el.value);
	if( el.value != sal ){
		el.value = sal;
		if( el.onchange )el.onchange();
	}
}
function doSalaryHTML(el,hoursPerWeek,thread){
	if( !thread )
		return setTimeout(getFuncName()+"("+el.uniqueID+","+(hoursPerWeek||40)+",true)",100);
	el.innerHTML = calcSalary(el.innerHTML,hoursPerWeek);
	return false;
}
function calcSalary(text,hoursPerWeek){
	if( text.match(/\/$/) )
		return parseInt(parseInt(text)/12);
	if( text.match(/[*]$/) )
		return parseInt(parseInt(text)*(hoursPerWeek||40)*52/12);
	return text;
}
function selectElement(el){
	var r = el.document.body.createTextRange();
	r.moveToElementText(el);
	r.findText('~~');
	r.select();
}
function formatXXX(text,xxx,front){
	var s = new String(text);
	var re = new RegExp(".{"+s.length+"}"+(front?"":"$"));
	return xxx.replace(re,text);
}
function formatRate(rate){
	rate = new String(rate);
	var left = rate.split(".")[0];
	var right = rate.split(".")[1] || "000";
	return left+"."+formatXXX(right,"000",true);
}
function formatDate(date,mode){//mode 0 : YYYY/MM/DD - default,mode 1 : MM/DD/YYYY
	switch(mode||0){
		case 0:
			return date.getFullYear()+"/"+formatXXX(date.getMonth()+1,"00")+"/"+formatXXX(date.getDate(),"00");
		case 1:
			return formatXXX(date.getMonth()+1,"00")+"/"+formatXXX(date.getDate(),"00")+"/"+date.getFullYear();
		throw new Error(0,mode+" is invalid mode.");
	}
}
String.prototype.reEncode = function(except){
	var re = new RegExp("[$()*+.[\\]?\\\\/^{}|]".replace(new RegExp("["+except+"]"),""),"g");
	return this.replace(re,"[$&]");
}
function dateAdd(mode,number,date){
	if( !date )date = new Date();
	var format = typeof(date) == "string";
	if( format )date = Date.parse(date);
	switch(mode){
		case 'dd': date = new Date(date.valueOf()+1000*60*60*24*number); break;
		default: throw new Error(0,(mode||'none')+" is invalid mode.");
	}
	return format ? formatDate(date,1) : date;
}
// ***** Mask behavior *****
function initPreset(parent){
	var presets = selectElementsByAttributeEx(parent||document,"preset");
	for( var i=0; i < presets.length; i++ ){
		//if( presets[i].tagName == "INPUT" )continue;
		if( presets[i].bid /*&& defined(presets[i].value)*/ )presets[i].preset = presets[i].preset;
		else presets[i].bid = presets[i].addBehavior("/Include/HTC/mask_js.htc");
	}
}
function initMask(parent){
	var presets = selectElementsByAttributeEx(parent||document,"preset");
	for( var i=0; i < presets.length; i++ )
		presets[i].onpropertychange = setMask;
}
function refreshMask(parent,presets,n){
	if( !presets ){
		presets = selectElementsByAttributeEx(parent||document,"preset");
		return setTimeout(function(){refreshMask(null,presets,0);},10);
	}
	if( n >= presets.length )return;
	presets[n].preset += "";
	setTimeout(function(){refreshMask(null,presets,n+1);},10);
}
function setMask(el,preset){
	if( event && event.type == "propertychange" && !event.propertyName.match(/(value|innerHtml)/i) )return; 
	el = el || event.srcElement;
	if( preset )el.setAttribute("preset",preset);
	clearTimeout(el.proc);
	el.proc = setTimeout(function(){_setMask(el);},500);
	function _setMask(el){
		el.onpropertychange = null;
		if( el.bid /*&& defined(presets[i].value)*/ )el.preset1 = el.preset;
		else el.bid = el.addBehavior("/Include/HTC/mask_js.htc");
	}
}
// **************************
function UserGroups(groupList){
	this._groups = groupList.split(',');
	this.contains = function(groupName){
		var re = new RegExp('^'+groupName+'$','i');
		for( var i = 0; i < this._groups.length; i++ )
			if( this._groups[i].match(re) )return true;
	}
	this.find = function(groupTemplate){
		for( var i = 0; i < this._groups.length; i++ )
			if( this._groups[i].match(groupTemplate) )return this._groups[i];
		return "";
	}
}
